//使用pthread_cancel函数发送取消的请求
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<pthread.h>
void* task2(void *pv)
{
	printf("正在取消线程请稍后...\n");
	sleep(3);
	int errno=pthread_cancel(*(pthread_t *)pv);//不能写成 *pv
   if(0!=errno)
   {
	   printf("pathread_cancel: %s\n",strerror(errno));
	   exit(-1);
   }
    printf("发送取消请求成功!\n");
}
void *task(void *pv)
{
	while(1)
	{
		printf("i am superman , oh ye!\n");
	    usleep(200000);
	}
}
int main()
{
	//1.创建子进程,使用pthread_create函数
	pthread_t thread;
	int errno=pthread_create(&thread,NULL,task,NULL);
	if(0!=errno)
	{
		printf("pthread_create: %s\n",strerror(errno));
		exit(-1);
	}
	//创建另外一个线程给线程1发送取消请求
	pthread_t thread2;
	errno=pthread_create(&thread2,NULL,task2,&thread);
	if(0!=errno)
	{
		printf("pthread_create: %s\n",strerror(errno));
		exit(-1);
	}
	errno=pthread_join(thread2,NULL);
	if(0!=errno)
	{
		printf("pthread_join: %s\n",strerror(errno));
		exit(-1);
	}
	//2.等待子进程终止,使用pthread_join函数
     errno=pthread_join(thread,NULL);
	 if(0!=errno)
	 {
		 printf("pthread_join: %s\n",strerror(errno));
		 exit(-1);
	 }
	 return 0;
}
